Most objects graphical representation in a window depends on some attributes. A fuel gauge for example would depend on its MUIA_Gauge_Current attribute, an animation object would depend on MUIA_Animation_CurrentFrame.
Whenever someone changes such an attribute with a SetAttrs() call, the corresponding object receives an OM_SET method with the new value. Usually, it could just render itself with some graphics.library calls. However, if the object is placed in a virtual group or if some other clipping or coordinate translation is required, this simple rendering will lead into problems.
That's why MUI offers the MUI_Redraw() function call. Instead of drawing directly during OM_SET, you should simply call MUI_Redraw(). MUI calculates all necessary coordinates and clip regions (in case of virtual groups) and then sends a MUIM_Draw method to your object.
To emphasize this point again: The only time your object is allowed to render something is when you receive a MUIM_Draw method. Drawing during other methods is illegal.